package MapClass;

import java.util.*;

public class MapClass {
    public static void main(String[] args) {
        //创建一个HashMap集合
        Map<Integer,String> map =new HashMap<>();
        //添加键值对key和value
        map.put(1,"wangfugui");//自动装箱
        map.put(2,"wenwen");
        map.put(3,"lisa");
        //获取所有value/key
        Collection<String> coll =map.values();
        for (String s:coll) {
            System.out.println("遍历键值对："+s);
        }
        //通过key获取value
        String value =map.get(2);
        System.out.println(value);
        //获取键值对数量
        System.out.println("键值对数量:"+map.size());
        //通过key删除一个键值对
        map.remove(3);
        System.out.println("删除key3，键值对数量:"+map.size());
        //判断是否包含某个key
        System.out.println("是否包含某个key:"+map.containsKey(1));//true
        //判断是否包含某个value
        System.out.println("是否包含某个value:"+map.containsValue("wangfugui"));//true
        //清空
        map.clear();
        System.out.println("清空后，键值对数量:"+map.size());
        //重新传入键值对
        map.put(1,"fuguiya");
        map.put(2,"wenwenya");
        map.put(3,"lisaya");
        map.put(3,"lisa");//因为key相同，所以会将上面的数据覆盖
        //取出所有的key（属于set集合）
        Set<Integer> keys =map.keySet();
        /*Iterator<Integer> ite =keys.iterator();//创建遍历对象
        while(ite.hasNext()){
            Integer key =ite.next();//通过遍历获取key
            String value2=map.get(key);//通过key值来获取value
            System.out.println(key+"="+value2);
        }*/
        //将Map集合拆分
        Set<Map.Entry<Integer,String>> set2 = map.entrySet();
        Iterator<Map.Entry<Integer,String>> ite =set2.iterator();//创建遍历对象
        /*
        while(ite.hasNext()){
            //调用Map的Entry类提取键值对
            Map.Entry<Integer,String> node= ite.next();
            //用get方法调用key和velue
            Integer key =node.getKey();
            String velue =node.getValue();
            System.out.println(key+"="+value);
        }*/
        //这一种方式效率比较高
        for (Map.Entry<Integer,String> node: set2) {
            System.out.println(node.getKey()+"="+node.getValue());
        }
    }
}
